1. Field of the Invention
This invention relates generally to the field of computing technology and more particularly concerns the optimization of data transfer rates by sending more data during a clock period by using multilevel coding of data signals.
2. Description of the Related Art
The art of networking computers has evolved over the years to bring computer users a rich communication and data sharing experience. Typically, in a network, numerous devices may be connected to a computer to maximize computing power and efficiency. As is well known, new levels of sophisticated communication technologies enable users to share information across both large and small networks.
In computer technology, computers may intercommunicate through data transmission through a network connecting numerous computers. For example, in a typical computer system, a computer system may include a computer and peripheral devices such as, for example, storage devices which are interconnected by data buses. For the computer to transfer data to and from the storage device, an input and output connected by differential drivers may be utilized. Within a computer system, it is often desirable to connect a variety of peripherals to the system bus of the computer itself for communication with the central processing unit and other devices connected to the computer. A variety of bus types may be used for this purpose.
To access and control certain types of peripheral devices connected to a computer system, the computer generally utilizes host adapter cards (or controllers) attached to the computer's internal bus. The computer may also have peripheral device controllers built into the motherboard. These controllers serve to coordinate and manage the data communication to and from the peripheral devices through the bus. Controllers may be in the form of a video display adapter, an integrated drive electronics (IDE) controller, a small computer system interface (SCSI) controller, or other similar cards or chips which control peripheral devices. Such controllers may communicate with the peripheral devices through use of a bus connecting the computer with the peripheral devices. By use of software device drivers, a host computer can instruct a SCSI chip within the SCSI controller to manage a specific peripheral device and control the data transfer between the peripheral device and the host computer. Therefore, it is important to have optimum throughput through a bus so controllers and peripheral devices may communicate with each other in an optimum manner.
FIG. 1A illustrates an example of a computer system 10. The computer system 10 includes a computer 12, a disk drive 14, a tape drive 16, and any number of other peripherals 18 such as card reader units, voice input/output, displays, video input/output, scanners, etc. The computer and peripherals in this example are connected via a Small Computer System Interface (SCSI) bus 20, although a wide variety of other buses may also be used.
Any number of computers or hosts may be present in computer system 10 and be connected to SCSI bus 20. Each computer may also contain a variety of hardware and software. By way of example, computer 12 includes a monitor 30, a motherboard 32, a wide variety of processing hardware and software 34 and a SCSI host adapter card (or interface card) 36. The host adapter card 36 provides an interface between the microcomputer bus of computer 12 located on motherboard 32 and SCSI bus 20.
SCSI is a universal parallel interface standard for connecting disks and other high performance peripherals to microcomputers. However, it should be appreciated that computer system 10 is an example of a system, and other interface standards having characteristics similar to SCSI may also be used in such a computer system.
In one example, SCSI bus 20 is an 8-bit parallel flat cable interface (18 total signals) with hand shakes and protocols for handling multiple hosts and multiple peripherals. It has both a synchronous and an asynchronous mode, and has defined software protocols. In the embodiment shown, the SCSI bus uses differential drivers, although SCSI is also available with single wire drivers. SCSI interface cards (such as card 36) plug into most microcomputer buses including VME, Multibus I and II, PCI, ISA, VL, EISA and MCA. In another embodiment, SCSI bus 20 is a 16-bit parallel cable interface (27 total signals). In other embodiments motherboard 32 has SCSI adapter card 36 incorporated into the motherboard itself, and a separate, plug-in adapter card is not needed. SCSI bus 20 is a multi-drop bus typically produced as a flat cable that connects from a computer 12 to any number of peripherals. In this example, disk drive 14, tape drive 16, and other peripherals 18 connect to SCSI bus 20 by tapping into the bus. In other examples, it is possible for any number of peripherals to be inside computer 12 in which case SCSI bus 20 may also be present inside computer 12 also.
Disk drive 14 includes the physical disk drive unit 40 and SCSI controller card 42 and other internal cables and device level interfaces (not shown) for enabling the unit to communicate with computer 12. After connecting to disk drive 14, SCSI bus 20 continues on to connect to tape drive 16. The tape drive 16 includes the physical tape drive 50, SCSI controller card 52, and other internal cables and interfaces (not shown) for communicating with computer 12.
In a typical SCSI data transmission system, a transmitter is connected to a receiver by transmission lines. When data is transferred from the transmitter to the receiver, which may happen, for example, when the SCSI controller car 52 transmits data to the disk drive 14, data can be sent where one bit is sent in a clock cycle at given frequency. If a data transmission is double clocked, one bit may be sent per half cycle so that two bits of data may be sent during one full clock cycle. Therefore, at maximum, prior art systems are not generally capable of sending more than 2 bits per full clock cycle. Consequently, at a frequency of, for example 160 MHz, 320 Mbits of data per second may be sent. This severely limits the amount of data throughput that may be transmitted through a bus such as, for example, the SCSI bus 20.
FIG. 1B shows a diagram 50 illustrating a time progression in relation to data transmission in a typical data transmission bus. Double transition clocking, (also referred to as dual edge clocking or double clocking as used herein) can be utilized in data transmission so both the leading edge and the trailing edge of the clocking signal are used to clock a data line sampling. In this example, data sent through a bus is double clocked so two voltage signal levels corresponding to a bit content of “0” and “1” respectively are utilized to transmit data from the transmitter to the receiver. As is well known by one skilled in the electrical arts, digital data is transmitted using a single bit “0” or a single bit “1”. In this environment, a signal level voltage of 0 corresponds to the bit content of “0” and a signal voltage of 5 volts corresponds to the bit content of “1”. A clock signal 52 is coordinated with digital signal 54 so each of the clock edges initiates a signal level output as shown by data initiation 56. Unfortunately, after a certain frequency is reached, data transmission through a bus is limited due to numerous constraints. For example, a particular bus has a certain maximum bandwidth with a cut off frequency. Typically, the cutoff frequency is 320 MHz, and any frequency beyond 320 MHz is very difficult to utilize. Therefore, even with double clocking, it is very difficult to achieve greater than a data transfer rate of 640 Mbytes per second in SCSI systems. Unfortunately, when the cutoff frequency is reached, the signal becomes so degraded due to increased noise levels that it is extremely difficult if not impossible to tell if the digital signal is transmitting a “0” or a “1”. Consequently, after a certain frequency is reached, data throughput speed is limited and data transmission speeds can be a bottleneck in data processing operations.
In view of the foregoing, what is needed is a new and improved methodology for optimizing data transmission methods by enhancing digital data throughput though a SCSI bus. Such an approach would increase data throughput thereby greatly increasing the efficiency and operating effectiveness of a computer system.